/**
 * PlanoTeste - Listagem de planos de testes
 */
PlanoTesteLista = Ext.extend(Bt.grid.GridPanel,{
	
	//Config Options {
	
	 	 title			: 'Lista de Plano de Testes'
		,autoSizeColumns: false
		,actions		: {
			 visualize: false
		}
		
	//}
	
	//Initialize {
	
		,initComponent: function()
		{
			this.store = new Ext.data.DirectStore({
				 idProperty	: 'cd_plano_teste'
				,autoLoad	: true
				,autoDestroy: true
				,directFn	: Server.PlanoTeste.List
				,fields	: [
					 {name: 'cd_plano_teste'		, type: 'int'	}
					,{name: 'cd_projeto'			, type: 'int'	}
					,{name: 'cd_modulo'				, type: 'int'	}
					,{name: 'ds_plano_teste'		, type: 'string'}
					,{name: 'ds_projeto'			, type: 'string'}
					,{name: 'ds_modulo'				, type: 'string'}
					,{name: 'ds_criterios_termino'	, type: 'string'}
					,{name: 'ds_documentos'			, type: 'string'}
					,{name: 'ds_func_afetadas'		, type: 'string'}
					,{name: 'ds_riscos'				, type: 'string'}
				]
			});
			
			Ext.apply(this,{
				tbar:[{
					 text	: 'Novo Plano de Teste'
					,iconCls: 'ico_add'
					,handler: this._onBtnAddClick
					,scope	: this
				}]
				,columns: [{
					 header		: 'Nr.'
					,dataIndex	: 'cd_plano_teste'
					,align		: 'center'
					,width		: 60
				},{
					 header		: 'Descri&#231;&#227;o'
					,dataIndex	: 'ds_plano_teste'
				},{
					 header		: 'Projeto'
					,dataIndex	: 'ds_projeto'
				},{
					 header		: 'M&#243;dulo'
					,dataIndex	: 'ds_modulo'
					,width		: 120
				},{
					 header		: 'Crit&eacute;rios de t&eacute;rmino'
					,dataIndex	: 'ds_criterios_termino'
					,width		: 180
				},{
					 header		: 'Documentos'
					,dataIndex	: 'ds_documentos'
					,width		: 180
				},{
					 header		: 'Funcionalidades afetadas'
					,dataIndex	: 'ds_func_afetadas'
					,width		: 180
				},{
					 header		: 'Riscos'
					,dataIndex	: 'ds_riscos'
					,width		: 180
				}]
			});
				
			PlanoTesteLista.superclass.initComponent.call(this);
		}	
		
	//}
	
	//Override {
		
		,destroy: function()
		{
			if (this.winCadastro) {
				this.winCadastro.destroy();
			}
				
			PlanoTesteLista.superclass.destroy.call(this);
		}
		
		,onEditClick: function(me, record, rowIndex)
		{
			this._openWindowCadastro(Ext.apply({},record.data));
		}
		
		,onRemoveClick: function(me, record, rowIndex)
		{
			Ext.Msg.confirm('Confirma&#231;&#227;o','Deseja excluir este registro?',function(opt)
			{
				if(opt === 'no'){
					return false;
				}
				
				alert('MOCK: excluir registro pelo controller!');
				return;
			
				/*
 				Server.PlanoTeste.Delete(record.id,function(result)
				{
					if(result && result.success)
					{
						record.store.remove(record);
					}
				});*/
				
			},this);
		}
		
	//}
	
	//Listeners{
				
		,_onBtnAddClick: function()
		{
			this._openWindowCadastro();
		}
		
	//}
	
	//Demais metodos{
	
		,_openWindowCadastro: function( data )
		{
			if(!this.winCadastro)
			{
				this.winCadastro = new PlanoTesteCadastro(
				{
					 closeAction: 'hide'
					,hideMode	: 'offsets'
					,listeners	: {
						 scope		: this
						,confirmar	: function()
						{
							this.store.reload();
						}
					}
				});
			}
			
			//show
			this.winCadastro.show();
			
			if(data)
			{
				this.winCadastro.loadData(data);
			}
			else
			{
				this.winCadastro.reset(data);
			}
		}
	
	//}
	
});

Ext.reg('tst-plano_testelista',PlanoTesteLista);

/**
 * PlanoTeste - Cadastro de plano_testes
 */
PlanoTesteCadastro = Ext.extend(Ext.Window,{
	
	//Config Option {
	
		 title		: 'Cadastro de Plano de Teste'
		,iconCls	: 'ico_blueprint'
		,layout		: 'fit'
		,constrain	: true
		,modal		: true
		,width		: 500
		,height		: 510
	
	//}
		
	//Initialize {
		
		,constructor: function()
		{
			this.addEvents('confirmar');
			
			PlanoTesteCadastro.superclass.constructor.apply(this,arguments);
		}
		
		,initComponent: function()
		{
			//renderTo e size{
			
				this.renderTo 	= this.renderTo||Ext.getBody();
				this.width		= Math.floor(this.renderTo.getWidth() *0.9).constrain(this.minWidth ,this.width );
				this.height		= Math.floor(this.renderTo.getHeight()*0.9).constrain(this.minHeight,this.height);
				
			//}	
			
			this.form = new Ext.form.FormPanel({
			 	 xtype		: 'form'
				,bodyStyle	: 'padding:10px;'
				,defaultType: 'textfield'
				,buttonAlign: 'right'
				,labelAlign	: 'top'
				,border		: false
				,autoScroll	: true
				,defaults	: {
					anchor:'-17'
				}
				,items		: [{
					 xtype		: 'hidden'
					,name		: 'cd_plano_teste'
				},{
					 fieldLabel	: 'Descri&#231;&#227;o'
					,name		: 'ds_plano_teste'
					,itemId		: 'ds_plano_teste'
					,ref		: '../txtDescricao'
					,allowBlank	: false
					,maxLength	: 200
				},{
					 xtype		: 'container'
					,layout		: 'column'
					,defaults	: {
						 xtype		: 'container'
						,layout		: 'form'
						,labelAlign	: 'top'
						,defaultType: 'bt-combo'
						,columnWidth: 0.5
					}
					,items		: [{
						 style: 'padding-right:2px;'
						,items: {
							 hiddenName		: 'cd_projeto'
							,valueField		: 'cd_projeto'
							,displayField	: 'ds_projeto'
							,fieldLabel		: 'Projeto'
							,anchor			: '0'
							,emptyText		: 'Selecione um projeto'
							,ref			: '../../../_comboProjeto'
							,editable		: false
							,allowBlank		: false
							,store			: new Ext.data.DirectStore({
								 autoDestroy: true
								,idProperty	: 'cd_projeto'	
								,directFn	: Server.Projeto.List
								,fields		: [
									 {name: 'cd_projeto', type: 'int'	}
									,{name: 'ds_projeto', type: 'string'}
								]
							})
							,listeners:{
								 scope	: this
								,select	: this._onComboProjetoSelect	
							}
						}
					},{
						 style: 'padding-left:2px;'
						,items: {
							 xtype			: 'bt-combo'
							,hiddenName		: 'cd_modulo'
							,valueField		: 'cd_modulo'
							,displayField	: 'ds_modulo'
							,fieldLabel		: 'M&#243;dulo'
							,ref			: '../../../_comboModulo'
							,anchor			: '0'
							,disabled		: true
							,editable		: false
							,allowBlank		: false
							,store			: new Ext.data.DirectStore({
								 autoDestroy: true
								,idProperty	: 'cd_modulo'
								,fields		: [
									 {name: 'cd_modulo', type: 'int'	}
									,{name: 'ds_modulo', type: 'string'}
								]
								,proxy: new Ext.data.MemoryProxy([{
									 cd_modulo	: 1
									,ds_modulo	: "Impacto"
								},{
									 cd_modulo	: 2
									,ds_modulo	: "Aprova��o"
								}])
							})
						}
					}]
				},{
					 xtype		: 'textarea'
					,name		: 'ds_criterios_termino'
					,fieldLabel	: 'Crit&eacute;rios de t&eacute;rmino'
					,height		: 55
				},{
					 xtype		: 'textarea'
					,name		: 'ds_documentos'
					,fieldLabel	: 'Documentos'
					,height		: 55
				},{
					 xtype		: 'textarea'
					,name		: 'ds_func_afetadas'
					,fieldLabel	: 'Funcionalidades afetadas'
					,height		: 55
				},{
					 xtype		: 'textarea'
					,name		: 'ds_riscos'
					,fieldLabel	: 'Riscos'
					,height		: 55
				}]
			});
			
			Ext.apply(this,{
				 items	: this.form
				,buttons: [{
					 text	: 'Confirmar'
					,iconCls: 'ico_accept'
					,scope	: this
					,handler: this._onBtnConfirmarClick
				},{
					 text	: 'Cancelar'
					,iconCls: 'ico_cancel'
					,scope	: this
					,handler: function(){ this.hide(); }
				}]
			});
			
			PlanoTesteCadastro.superclass.initComponent.call(this);
		}	
		
	//}
	
	//Listeners{
	
		,_onBtnConfirmarClick: function()
		{
			alert('MOCK: enviar dados para o controller!');
			return false;
			
			/*
			this.form.getForm().submit({
				 waitMsg	: 'Enviando formul&#225;rio...'
				,waitTitle	: 'Aguarde'
				,scope		: this
				,success	: function()
				{
					this.hide();
					this.fireEvent('confirmar');
				}
			});
			*/
		}
		
		,_onComboProjetoSelect: function(comboProjeto, r)
		{
			if(r.data.cd_projeto)
			{
				this._comboModulo.enable();
			}
			else
			{
				this._comboModulo.setValue('');
				this._comboModulo.disable();
			}
		}
		
	//}
	
	//Demais métodos {
	
		,loadData: function(data)
		{
			this.form.getForm().setValues(data);
			
			if(this._comboProjeto.store.getCount() === 0)
			{
				this._comboProjeto.store.load({
					 scope		: this
					,callback	: function()
					{ 
						this._comboProjeto.setValue(data.cd_projeto);
					}
				});
			}
			
			this.setTitle('Edi&#231;&#227;o de Plano de Teste');
			this.txtDescricao.focus.defer(500,this.txtDescricao);
		}
		
		,reset: function()
		{
			this.form.getForm().reset();
			
			this.setTitle('Cadastro de Plano de Teste');
			this.txtDescricao.focus.defer(500,this.txtDescricao);
		}
		
	//}
	
});